﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Chilis.Marketing.Common;
using Chilis.Marketing.Business.Logic;
using Chilis.Marketing.Business.Entity;
using System.Globalization;

public partial class Gral_DetActividad : System.Web.UI.Page
{
    #region ATRIBUTOS

    private Constantes.ACCION accion;
    private BLActividad actividadBL;

    #endregion

    #region PROPIEDADES
    #endregion

    #region METODOS

    private void ActivarControles(bool activo)
    {
        this.txtCodigoCampanha.Enabled = false;
        this.txtNombreCampanha.Enabled = false;
        this.txtCodigo.Enabled = false;
        this.txtNombre.Enabled = activo;
        this.txtCosto.Enabled = activo;
        this.txtDescripcion.Enabled = activo;
        this.txtFechaProyIni.Enabled = activo;
        this.txtFechaProyFin.Enabled = activo;
        this.txtFechaRealIni.Enabled = activo;
        this.txtFechaRealFin.Enabled = activo;
    }

    private void CargarDatos(int idActividad)
    {
        this.actividadBL = new BLActividad();
        BEActividad actividadBE = this.actividadBL.obtenerActividadPorId(idActividad);
        if (actividadBE != null)
        {
            this.txtCodigo.Text = actividadBE.IdActividad.ToString();
            this.txtNombre.Text = actividadBE.Nombre.ToString();

            this.txtCosto.Text = String.Format("{0:N}", actividadBE.Costo);
            this.txtDescripcion.Text = actividadBE.Descripcion.ToString();

            if (actividadBE.FechaEstimadaInicio.HasValue)
            {
                this.txtFechaProyIni.Text = actividadBE.FechaEstimadaInicio.Value.ToString("dd/MM/yyyy");
            }
            if (actividadBE.FechaEstimadaFin.HasValue)
            {
                this.txtFechaProyFin.Text = actividadBE.FechaEstimadaFin.Value.ToString("dd/MM/yyyy");
            }
            if (actividadBE.FechaRealInicio.HasValue)
            {
                this.txtFechaRealIni.Text = actividadBE.FechaRealInicio.Value.ToString("dd/MM/yyyy");
            }
            if (actividadBE.FechaRealFin.HasValue)
            {
                this.txtFechaRealFin.Text = actividadBE.FechaRealFin.Value.ToString("dd/MM/yyyy");
            }
        }
    }

    private BEActividad ObtenerActividadBE_WebForm()
    {
        BEActividad actividadBE = new BEActividad();
        if (this.txtCodigo.Text != "")
        {
            int tempIdActividad = Constantes.idValorNulo;
            int.TryParse(this.txtCodigo.Text, out tempIdActividad);
            actividadBE.IdActividad = tempIdActividad;
        }

        actividadBE.Nombre = this.txtNombre.Text.Replace("'", "''");

        if (this.txtCosto.Text != string.Empty)
        {
            double tempCosto = 0;
            double.TryParse(this.txtCosto.Text, out tempCosto);
            if (tempCosto != 0)
            {
                actividadBE.Costo = tempCosto;
            }
        }
        actividadBE.Descripcion = this.txtDescripcion.Text.Replace("'", "''");

        if (this.txtFechaProyIni.Text != string.Empty)
        {
            CultureInfo cultura = System.Globalization.CultureInfo.CreateSpecificCulture("es-PE");
            DateTime tempFechaProyIni;
            if (DateTime.TryParse(this.txtFechaProyIni.Text, cultura, System.Globalization.DateTimeStyles.None, out tempFechaProyIni))
            {
                actividadBE.FechaEstimadaInicio = tempFechaProyIni;
            }
        }
        if (this.txtFechaProyFin.Text != string.Empty)
        {
            CultureInfo cultura = System.Globalization.CultureInfo.CreateSpecificCulture("es-PE");
            DateTime tempFechaProyFin;
            if (DateTime.TryParse(this.txtFechaProyFin.Text, cultura, System.Globalization.DateTimeStyles.None, out tempFechaProyFin))
            {
                actividadBE.FechaEstimadaFin = tempFechaProyFin;
            }
        }
        if (this.txtFechaRealIni.Text != string.Empty)
        {
            CultureInfo cultura = System.Globalization.CultureInfo.CreateSpecificCulture("es-PE");
            DateTime tempFechaRealIni;
            if (DateTime.TryParse(this.txtFechaRealIni.Text, cultura, System.Globalization.DateTimeStyles.None, out tempFechaRealIni))
            {
                actividadBE.FechaRealInicio = tempFechaRealIni;
            }
        }
        if (this.txtFechaRealFin.Text != string.Empty)
        {
            CultureInfo cultura = System.Globalization.CultureInfo.CreateSpecificCulture("es-PE");
            DateTime tempFechaRealFin;
            if (DateTime.TryParse(this.txtFechaRealFin.Text, cultura, System.Globalization.DateTimeStyles.None, out tempFechaRealFin))
            {
                actividadBE.FechaRealFin = tempFechaRealFin;
            }
        }

        actividadBE.Order_by = (char)Constantes.ORDENAR_POR.CODIGO;
        actividadBE.De_forma = (char)Constantes.DE_FORMA.ASCENDENTE;

        return actividadBE;
    }

    private void CargarTitulos(string tituloTxt)
    {
        this.lblTitulo.Text = tituloTxt;
    }

    private void CargarCampanha()
    {
        this.txtCodigoCampanha.Text = (Request.QueryString["idcmp"] != null ? Request.QueryString["idcmp"].ToString() : string.Empty);
        this.txtNombreCampanha.Text = (Request.QueryString["nocmp"] != null ? Request.QueryString["nocmp"].ToString() : string.Empty);
    }

    #endregion

    #region EVENTOS

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!Page.IsPostBack)
            {
                ControlHelper.RegisterClientScriptFile(this, "jquery.js", true);
                ControlHelper.RegisterClientScriptFile(this, "json2.js", true);
                ControlHelper.RegisterClientScriptFile(this, "thickbox.js", true);

                ControlHelper.RegisterClientScriptFile(this, "jshashtable.js", true);
                ControlHelper.RegisterClientScriptFile(this, "numberformatter.js", true);
                ControlHelper.RegisterClientScriptFile(this, "general.js", true);

                Constantes.ACCION accion = Constantes.ACCION.NINGUNO;
                if (Request.QueryString["acc"] != null)
                {
                    accion = Constantes.ObtenerEnumAccion(Request.QueryString["acc"]);
                }
                switch (accion)
                {
                    case Constantes.ACCION.NINGUNO:
                        break;
                    case Constantes.ACCION.VER:
                        this.CargarTitulos(Mensajes.txtTitulo_ActividadVer);
                        this.CargarCampanha();
                        this.btnAceptar.Visible = false;
                        if (Request.QueryString["id"] != null)
                        {
                            int idActividad = int.Parse(Request.QueryString["id"].ToString());
                            this.CargarDatos(idActividad);
                            this.ActivarControles(false);
                        }
                        break;
                    case Constantes.ACCION.NUEVO:
                        this.CargarTitulos(Mensajes.txtTitulo_ActividadNuevo);
                        this.CargarCampanha();
                        this.ActivarControles(true);
                        break;
                    case Constantes.ACCION.MODIFICAR:
                        this.CargarTitulos(Mensajes.txtTitulo_ActividadModificar);
                        this.CargarCampanha();
                        if (Request.QueryString["id"] != null)
                        {
                            int idActividad = int.Parse(Request.QueryString["id"].ToString());
                            this.CargarDatos(idActividad);
                            this.ActivarControles(true);
                        }
                        break;
                    case Constantes.ACCION.ELIMINAR:
                        this.CargarTitulos(Mensajes.txtTitulo_ActividadEliminar);
                        this.CargarCampanha();
                        if (Request.QueryString["id"] != null)
                        {
                            int idActividad = int.Parse(Request.QueryString["id"].ToString());
                            this.CargarDatos(idActividad);
                            this.ActivarControles(false);
                        }
                        break;
                    case Constantes.ACCION.ASOCIAR:
                        break;
                    case Constantes.ACCION.APROBAR:
                        break;
                    case Constantes.ACCION.GENERAR_REPORTE:
                        break;
                    default:
                        break;
                }

                this.txtCosto.Attributes.Add("OnBlur", String.Format("formateaNumero('{0}');", this.txtCosto.ClientID));
            }
        }
        catch (Exception ex)
        {
            Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_MostrarDetalle + "&descError=" + ex.Message, false);
        }
    }

    protected void btnAceptar_Click(object sender, EventArgs e)
    {
        try
        {
            Constantes.ACCION accion = Constantes.ACCION.NINGUNO;
            if (Request.QueryString["acc"] != null)
            {
                accion = Constantes.ObtenerEnumAccion(Request.QueryString["acc"]);
            }

            BECampanha campanhaBE = null;
            if (Request.QueryString["idcmp"] != null)
            {
                int tempIdCampanha = Constantes.idValorNulo;
                int.TryParse(Request.QueryString["idcmp"], out tempIdCampanha);
                campanhaBE = new BECampanha();
                campanhaBE.IdCampanha = tempIdCampanha;
            }
            //if (!ValidarDatosIngreso())
            //{
            //    return;
            //}

            this.actividadBL = new BLActividad();
            BEActividad actividadBE = this.ObtenerActividadBE_WebForm();
            string msjeError = "";
            string msjeExitoOperacion = "";
            string msjeErrorOperacion = "";
            bool result = false;

            switch (accion)
            {
                case Constantes.ACCION.NINGUNO:
                    break;
                case Constantes.ACCION.VER:
                    break;
                case Constantes.ACCION.NUEVO:
                    msjeErrorOperacion = Mensajes.msjeError_InsertarRegistro;
                    msjeExitoOperacion = Mensajes.msjeExito_InsertarRegistro;
                    result = true;
                    result = this.actividadBL.insertarActividad(actividadBE, campanhaBE);
                    break;
                case Constantes.ACCION.MODIFICAR:
                    msjeErrorOperacion = Mensajes.msjeError_ModificarRegistro;
                    msjeExitoOperacion = Mensajes.msjeExito_ModificarRegistro;
                    result = this.actividadBL.modificarActividad(actividadBE, campanhaBE);
                    break;
                case Constantes.ACCION.ELIMINAR:
                    msjeErrorOperacion = Mensajes.msjeError_EliminarRegistro;
                    msjeExitoOperacion = Mensajes.msjeExito_EliminarRegistro;
                    actividadBE.Estado = Constantes.ESTADO.INACTIVO;
                    result = this.actividadBL.eliminarActividad(actividadBE);
                    break;
                case Constantes.ACCION.ASOCIAR:
                    break;
                case Constantes.ACCION.APROBAR:
                    break;
                case Constantes.ACCION.GENERAR_REPORTE:
                    break;
                default:
                    break;
            }

            if (result == false)
            {
                Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_General + "&descError=" + msjeError, false);
            }
            else
            {
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append(@"<script language='javascript'>");
                sb.Append(@"parent.location.reload(1);");
                sb.Append(@"self.parent.tb_remove();");
                sb.Append(@"</script>");

                if (!ClientScript.IsStartupScriptRegistered("JSScriptDetAct"))
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "JSScriptDetAct", sb.ToString());
                }
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_General + "&descError=" + ex.Message, false);
        }
    }

    #endregion
    
}